package cn.source.system.account.service;

import cn.source.system.account.dto.TenantRoleDTO;
import com.taobao.api.ApiException;

import java.util.List;
import java.util.Map;

/**
 * <p>RoleService.java此类用于角色管理</p>
 * <p>@author:YXZhou</p>
 * <p>@remark:</p>
 */
public interface RoleService {


    /**
     * 创建租户内角色
     *
     * @param tenantId
     * @param role
     */
    void createTenantRole(Long tenantId, TenantRoleDTO role);

    /**
     * 删除租户内角色
     *
     * @param tenantId
     * @param roleCode
     * @return
     */
    void removeTenantRole(Long tenantId, String roleCode);

    /**
     * 修改租户内角色
     *
     * @param tenantId
     * @param role
     */
    void modifyTenantRole(Long tenantId, TenantRoleDTO role);

    /**
     * 查询某租户下角色
     *
     * @param tenantId
     * @return
     */
    List<TenantRoleDTO> queryTenantRole(Long tenantId);

    /**
     * 查询租户类型权限列表
     * @param tenantType
     * @return
     * @throws ApiException
     */
    Map<String, Object> queryPrivilegeTree(String tenantType) throws ApiException;
    /**
     * 获取角色已经绑定的权限
     * @param code
     * @return
     */
    Map<String, Object> queryBindPrivilege(String code);
    /**
     * 绑定角色权限
     * @param code
     * @param privileges
     * @return
     */
    Map<String, Object> bindPrivilege(String code, List<String> privileges);

}
